package com.doitedu.hbase.client;

import com.doitedu.hbase.utils.HbaseUtil;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.client.*;

import java.util.Iterator;

/**
 * @Date 2021/12/13
 * @Created by HANGGE
 * @Description
 * Scan全表扫描数据
 *   多行数据    ResultScanner  迭代器
 *    --------> Iterator<Result>
 *   Result  一行数据   行里面有单元格数据  不确定  迭代器
 *   Cell              result.current(); 迭代出单元格数据
 *      行键  列族  属性 值
 *   CellUtil 解析单元格数据
 *
 */
public class C04_Scan {
    public static void main(String[] args) throws Exception {
        Connection conn = HbaseUtil.getConnection();
        Table tbl = HbaseUtil.getTable("tb_teacher", conn);
        // 扫描表中所有的数据
        Scan scan = new Scan();
        // ResultScanner  存储的是  多行数据
        ResultScanner resultScanner = tbl.getScanner(scan);
        // Result  行数据
        Iterator<Result> iterator = resultScanner.iterator();
        // 遍历表中的每行数据
        while(iterator.hasNext()){
            System.out.println("...................行数据.....................");
            // 行数据   每行中有不同个数的单元格
            Result result = iterator.next();
            //行中有多个单元格   行键 列族  属性  值   -->Cell
            while (result.advance()){// 每行数据的单元格 由迭代器遍历   判断是否还有下一个单元格
                // 获取当前单元格
                Cell cell = result.current();
                //      rk001infoage  }���       *
                //数据有自己的结构封装   不好解析 提供了解析Cell的工具类
                byte[] cloneRow = CellUtil.cloneRow(cell);
                byte[] cloneFamily = CellUtil.cloneFamily(cell);
                byte[] cloneQualifier = CellUtil.cloneQualifier(cell);
                byte[] cloneValue = CellUtil.cloneValue(cell);

                System.out.println(new String(cloneRow)+":"+
                                new String(cloneFamily)+":"+
                                new String(cloneQualifier)+":"+
                                new String(cloneValue)
                        );

              /*  byte[] rowArray = cell.getRowArray();
                System.out.println(new String(rowArray));*/

            }

        }

        tbl.close();
        conn.close();

    }


}
